Event 클래스와 Listener 인터페이스
✒️ 2025-05-15 14:38 내용 수정
이벤트
사용자의 입력, 키보드나 마우스 등의 장치나 소프트웨어적으로 발생하는 모든 사건
- 이벤트 핸들러 : 이벤트가 발생하면 발생된 이벤트에 반응하여 필요한 것을 처리하는 것
- 자바에서 이벤트 핸들러는 메서드로 구현된다.
- 이벤트 지향 프로그램은 무한 루프를 돌면서 사용자의 이벤트가 발생하기를 기다리고, 이벤트가 발생하면 이벤트를 처리한 후 다시 무한 루프로 대기한다.
- 자바에서 대부분의 이벤트는 사용자가 GUI 화면에서 마우스나 키보드를 조작함으로써 발생한다.
- 이벤트의 발생은 마우스나 키보드를 조작함으로써 이루어지지만, JVM이 사용자의 조작을 인지하고 조작과 관련된 이벤트 객체를 생성함으로써 이벤트가 처리된다.
Listener 인터페이스
이벤트와 이벤트 핸들러 사이를 연결해주고 이벤트를 처리해주는 역할
~Listener형태의 이름을 가진다.- 사용 방법이 잘 기억나지 않는다면 인터페이스(interfaces), 추상클래스(Abstract classes)를 참고
- 순서
- 발생하는 이벤트를 처리할 이벤트 종류 결정
- 이벤트 처리에 적합한 Listener 인터페이스를 사용하여 클래스 작성
- 이벤트를 받아들일 각 Component에 Listener를 등록
- Listener 인터페이스에 선언된 메서드를 오버라이딩해서 이벤트 처리 루틴을 작성
- 익명 클래스로 만들어서 메서드를 오버라이드하거나, addListener(new Listener(){})로 익명 객체로 만들어서 메서드를 오버라이드한다.
ActionEvent 클래스
Component에 의해 정의된 Action이 발생했을 때의 이벤트를 나타내는 클래스
- AWT 이벤트다.
- 버튼을 누르거나 메뉴 아이템 선택 등과 같은 Action을 나타낸다.
- 객체를 바로 생성해서 메서드를 쓰는 경우가 더 많은 것 같다.
ActionEvent event1 = new ActionEvent(Object source, int id, String command);
ActionEvent event2 = new ActionEvent(Object source, int id, String command, int modifiers)
ActionEvent event3 = new ActionEvent(Object source, int id, String command, long when, int modifiers);
| 메서드 | 설명 |
|---|---|
String getActionCommand() |
해당 Action과 연관된 Command String을 반환 |
long getWhen() |
이벤트가 발생한 시간을 반환 |
ActionListener 인터페이스
ActionEvent를 처리하는 인터페이스
void actionPerformed(ActionEvent e)- 버튼이 눌렸을 때 호출된다.
- ActionEvent 객체에 버튼을 눌렀을 때 정보가 저장된다.
ItemEvent 클래스
아이템의 상태가 변할 때 발생하는 이벤트를 나타내는 클래스
- 체크박스나 라디오버튼의 상태가 변하는 Event를 나타낸다.
ItemEvnet event = new ItemEvent(ItemSelectable source, int id, Object item, int stateChange)
| 상수 | 설명 |
|---|---|
| SELECTED | 아이템이 선택됬을 때 상태를 알려주는 상수, 1 |
| DESELECTED | 아이템이 선택이 안됬을 때 상태를 알려주는 상수, 2 |
| 메서드 | 설명 |
|---|---|
ItemSelectable getItemSelectable() |
ItemEvent가 발생한 아이템을 반환 |
Object getItem() |
아이템의 상태가 변한 경우 이벤트에 영향을 받은 아이템을 반환 |
int getStateChange() |
상태 변화를 반환 |
Object getSource() |
이벤트가 발생한 Object를 반환 |
ItemListener 인터페이스
ItemEvent를 처리하는 인터페이스
void itemStateChanged(ItemEvent e)- 아이템의 상태가 변했을 때 호출되는 메서드
MouseEvent 클래스
마우스와 관련된 이벤트를 제공하는 클래스
MouseListener 인터페이스
MouseEvent를 처리하는 인터페이스
| 메서드 | 설명 |
|---|---|
mouseClicked(MouseEvent e) |
마우스를 클릭했을 때 |
mousePressed(MouseEvent e) |
마우스 버튼을 누른 상태일 때 |
mouseReleased(MouseEvent e) |
마우스 버튼을 놓았을 때 |
mouseEntered(MouseEvent e) |
마우스가 Component에 진입했을 때 |
mouseExited(MouseEvent e) |
마우스가 Component를 벗어났을 때 |
MouseAdapter 클래스
MouseListener 인터페이스와 MouseMotionListener 인터페이스를 구현한 어댑터 클래스
- MouseListener를 익명 클래스화 해서 사용할 때 메서드가 너무 많아 필요한 것만 사용하기 위한 클래스
- 추상클래스이기 때문에 메서드를 구현해야 사용할 수 있다.
| 메서드 | 설명 |
|---|---|
mouseClicked(MouseEvent e) |
마우스를 클릭했을 때 |
mousePressed(MouseEvent e) |
마우스 버튼을 누른 상태일 때 |
mouseReleased(MouseEvent e) |
마우스 버튼을 놓았을 때 |
mouseEntered(MouseEvent e) |
마우스가 Component에 진입했을 때 |
mouseExited(MouseEvent e) |
마우스가 Component를 벗어났을 때 |
mouseWheelMoved(MouseWheelEvent e) |
마우스 스크롤이 움직였을 때 |
mouseDragged(MouseEvent e) |
마우스로 드래그할 때 |
mouseMoved(MouseEvent e){} |
마우스가 움직였을 때 |
ComponentEvent 클래스
Component와 관련된 이벤트에 대한 클래스
| 메서드 | 설명 |
|---|---|
Component getComponent() |
이벤트가 발생한 Component를 반환 |
String paramString() |
해당 이벤트를 식별하는 매개변수 문자열을 반환 |
ComponentListener 인터페이스
Component Action을 처리하는 인터페이스
| 메서드 | 설명 |
|---|---|
componentResized(ComponentEvent e) |
Component의 크기가 변할 때 |
componentMoved(ComponentEvent e) |
Component의 위치가 변할 때 |
componentShown(ComponentEvent e) |
Component가 보일 때(visible) |
componentHidden(ComponentEvent e) |
Component가 안 보일 때(invisible) |
ComponentAdapter 클래스
ComponentListener 인터페이스를 구현한 어댑터 클래스
- ComponentListener에서 일부 메서드만 구현할 때 사용하는 클래스
| 메서드 | 설명 |
|---|---|
componentResized(ComponentEvent e) |
Component의 크기가 변할 때 |
componentMoved(ComponentEvent e) |
Component의 위치가 변할 때 |
componentShown(ComponentEvent e) |
Component가 보일 때(visible) |
componentHidden(ComponentEvent e) |
Component가 안 보일 때(invisible) |